﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;

public partial class Views_Postions : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            this.GridPanelPost_ReadData();
        }
    }

    protected void GridPanelPost_ReadData()
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                StorePost.DataSource = db.Postions.ToList<Postion>();
                StorePost.DataBind();

                GridPanelPost.ActiveIndex = -1;
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    protected void RowSelected(object sender, DirectEventArgs e)
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                RowSelectionModel rsm = GridPanelPost.SelectionModel.Primary as RowSelectionModel;
                if (rsm.SelectedRow == null)
                {
                    ResetControls_ViewInfor();
                    return;
                }

                int quaID = Int32.Parse(rsm.SelectedRow.RecordID);
                Postion post = db.Postions.Single(p => p.PosID == quaID);

                lblViewID.Text = post.PosID.ToString();
                lblViewCode.Text = post.CodePost;
                lblViewName.Text = post.NameOfPost;
                lblViewDesc.Text = post.Descriptons;
                chkViewStatus.Checked = Boolean.Parse(post.StatusOfPost.ToString());
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, xin bạn vui lòng quay lại sau").Show();
        }
    }

    protected void StorePost_ReadData(object sender, StoreReadDataEventArgs e)
    {
        this.GridPanelPost_ReadData();
    }

    // Cửa sổ popup thêm thông tin vị trí
    protected void btnToobarAdd_DirectClick(object sender, DirectEventArgs e)
    {
        this.ResetControls_windowAddPost();
        this.windowAddPost.Show();
    }

    protected void btnAddCancelPost_DirectClick(object sender, DirectEventArgs e)
    {
        ResetControls_windowAddPost();
        this.windowAddPost.Hidden = true;
    }

    protected void btnAddPost_DirectClick(object sender, DirectEventArgs e)
    {
        try
        {
            if (txtAddPostCode.Text.Length == 0)
            {
                lblWindowAddPostMes.Text = "Mã vị trí cán bộ nhân viên cần thêm mới không được để trống";
                txtAddPostCode.Focus(true, 0);
                return;
            }
            if (txtAddPostName.Text.Length == 0)
            {
                lblWindowAddPostMes.Text = "Tên vị trí cán bộ nhân viên cần thêm mới không được để trống";
                txtAddPostName.Focus(true, 0);
                return;
            }
            if (txtAddPostDes.Text.Length == 0)
            {
                lblWindowAddPostMes.Text = "Mô tả vị trí cán bộ nhân viên cần thêm mới không được để trống";
                txtAddPostDes.Focus(true, 0);
                return;
            }
            lblWindowAddPostMes.Text = "";

            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                foreach (var item in db.Postions.ToList<Postion>())
                {
                    if (item.CodePost.ToLower().Equals(txtAddPostCode.Text.Trim().ToLower()))
                    {
                        //lblWindowAddPostMes.Text = "Mã vị trí cán bộ nhân viên đã tồn tại, hãy nhập mã mới";
                        X.Msg.Alert("Thông báo hệ thống", "Mã vị trí cán bộ nhân viên đã tồn tại, hãy nhập mã mới").Show();
                        txtAddPostCode.Focus(true, 0);
                        return;
                    }
                }
                Postion pos = new Postion()
                {
                    CodePost = txtAddPostCode.Text.Trim(),
                    NameOfPost = txtAddPostName.Text.Trim(),
                    Descriptons = txtAddPostDes.Text.Trim(),
                    StatusOfPost = chkAddStatust.Checked
                };

                db.Postions.Add(pos);
                db.SaveChanges();

                windowAddPost.Hidden = true;
                windowAddPost.Dispose();
                ResetControls_windowAddPost();
                GridPanelPost_ReadData();
                X.Msg.Alert("Thông báo hệ thống", "Thêm vị trí cán bộ nhân viên mới thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau.").Show();
        }
    }

    // Cửa sổ popup chỉnh sửa thông tin vị trí
    protected void btnToobarUpdate_DirectClick(object sender, DirectEventArgs e)
    {
        try
        {
            RowSelectionModel rsm = GridPanelPost.SelectionModel.Primary as RowSelectionModel;
            if (rsm.SelectedRow == null)
            {
                X.Msg.Alert("Thông báo", "Bạn chưa chọn vị trí cán bộ nhân viên để chỉnh sửa thông tin").Show();
                return;
            }
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                int postID = Int32.Parse(rsm.SelectedRow.RecordID);
                Postion quas = db.Postions.Single(p => p.PosID == postID);

                windowUpdatePost.Show();
                lblWindowUpdatePostMsg.Text = "";
                txtUpdateCodePost.Text = quas.CodePost;
                txtUpdateNamePost.Text = quas.NameOfPost;
                txtUpdateDesPost.Text = quas.Descriptons;
                chkUpdateStatus.Checked = Boolean.Parse(quas.StatusOfPost.ToString());
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, hãy thử lại sau.").Show();
        }
    }

    protected void btnUpdate_DirectClick(object sender, DirectEventArgs e)
    {
        try
        {
            if (txtUpdateCodePost.Text.Length == 0)
            {
                lblWindowUpdatePostMsg.Text = "Mã vị trí cán bộ nhân viên cần thêm mới không được để trống";
                txtUpdateCodePost.Focus(true, 0);
                return;
            }
            if (txtUpdateNamePost.Text.Length == 0)
            {
                lblWindowUpdatePostMsg.Text = "Tên vị trí cán bộ nhân viên cần thêm mới không được để trống";
                txtUpdateNamePost.Focus(true, 0);
                return;
            }
            if (txtUpdateDesPost.Text.Length == 0)
            {
                lblWindowUpdatePostMsg.Text = "Mô tả vị trí cán bộ nhân viên cần thêm mới không được để trống";
                txtUpdateDesPost.Focus(true, 0);
                return;
            }
            lblWindowUpdatePostMsg.Text = "";

            RowSelectionModel rsm = GridPanelPost.SelectionModel.Primary as RowSelectionModel;
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {

                int postID = Int32.Parse(rsm.SelectedRow.RecordID);
                Postion postion = db.Postions.Single(p => p.PosID == postID);

                String codePostUpdate = txtUpdateCodePost.Text.Trim();
                foreach (var item in db.Postions)
                {
                    if (item.CodePost.Equals(codePostUpdate.ToLower()) && !item.CodePost.Equals(postion.CodePost))
                    {
                        lblWindowUpdatePostMsg.Text = "Mã vị trí cán bộ nhân viên đã tồn tại, hãy nhập mã mới";
                        txtUpdateCodePost.Focus(true, 0);
                        return;
                    }
                }

                postion.CodePost = txtUpdateCodePost.Text.Trim();
                postion.NameOfPost = txtUpdateNamePost.Text.Trim();
                postion.Descriptons = txtUpdateDesPost.Text.Trim();
                postion.StatusOfPost = chkUpdateStatus.Checked;

                db.SaveChanges();

                GridPanelPost_ReadData();

                windowUpdatePost.Hidden = true;
                windowUpdatePost.Dispose();
                X.Msg.Alert("Thông báo", "Cập nhật vị trí cán bộ nhân viên thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau.").Show();
        }
    }

    protected void btnUpdateCancel_DirectClick(object sender, DirectEventArgs e)
    {
        ResetControls_windowUpdatePost();
        this.windowUpdatePost.Hidden = true;
    }

    protected void btnToobarDeletes_DirectClick(object sender, DirectEventArgs e)
    {
        try
        {
            RowSelectionModel rsm = GridPanelPost.SelectionModel.Primary as RowSelectionModel;
            if (rsm.SelectedRow == null)
            {
                X.Msg.Alert("Thông báo", "Bạn chưa chọn vị trí cán bộ nhân viên để xóa thông tin").Show();
                return;
            }
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                int postID = Int32.Parse(rsm.SelectedRow.RecordID);
                Postion postDelete = db.Postions.Single(p => p.PosID == postID);

                X.Msg.Confirm("Thông báo", String.Format("Bạn có muốn xóa vị trí cán bộ nhân viên đã chọn ? [{0}]", postDelete.NameOfPost),
                    new MessageBoxButtonsConfig()
                    {
                        Yes = new MessageBoxButtonConfig
                        {
                            Text = "Xóa",
                            Handler = "App.direct.DoYes_DeletePostions();"
                        },
                        No = new MessageBoxButtonConfig
                        {
                            Text = "Hủy bỏ"
                        }
                    }).Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, hãy thử lại sau.").Show();
        }
    }

    [DirectMethod]
    public void DoYes_DeletePostions()
    {
        try
        {

            RowSelectionModel rsm = GridPanelPost.SelectionModel.Primary as RowSelectionModel;
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                int postID = Int32.Parse(rsm.SelectedRow.RecordID);
                Postion postDelete = db.Postions.Single(p => p.PosID == postID);

                db.Postions.Remove(postDelete);
                db.SaveChanges();

                GridPanelPost_ReadData();
                ResetControls_ViewInfor();

                X.Msg.Alert("Thông báo", "Xóa vị trí cán bộ nhân viên thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, hãy thử lại sau.").Show();
        }
    }

    protected void ResetControls_windowAddPost()
    {
        lblWindowAddPostMes.Text = "";
        txtAddPostCode.Text = "";
        txtAddPostName.Text = "";
        txtAddPostDes.Text = "";
        chkAddStatust.Checked = false;
    }

    protected void ResetControls_windowUpdatePost()
    {
        lblWindowUpdatePostMsg.Text = "";
        txtUpdateCodePost.Text = "";
        txtUpdateNamePost.Text = "";
        txtUpdateDesPost.Text = "";
        chkUpdateStatus.Checked = false;
    }

    protected void ResetControls_ViewInfor()
    {
        lblViewID.Text = "";
        lblViewCode.Text = "";
        lblViewName.Text = "";
        lblViewDesc.Text = "";
        chkViewStatus.Checked = false;
    }
}